<?php
//文件上传时分析路径信息
//author:songzhenghe 2014-1-24 
//version 0.1
class path_ana {
	private $data_root;
	private $web_root;
	private $http_domain;
	private $file;
	private $r;
	
	public function __construct(){
		//从配置文件中读取
		$this->data_root='E:/wwwroot2/cms/common/upload/';
		$this->web_root ='E:/wwwroot2/cms/';
		$this->http_domain='http://www.cms.com/';
		$this->r=null;
	}
	//$file E:/wwwroot2/cms/common/upload/2013/08/345349534.jpg
	public function init($file){
		$this->file=$file;
		$return=array();
		
		$pathinfo=pathinfo($file);
		// E:/wwwroot2/cms/common/upload/2013/08/
		$return[0]=$pathinfo['dirname'].'/';
		// 345349534.jpg
		$return[1]=$pathinfo['basename'];
		// 345349534
		if(strrpos($return[1],'.')!==false){
			$return[2]=substr($return[1],0,strrpos($return[1],'.'));
		}else{
			$return[2]=$return[1];
		}
		// jpg
		$return[3]=$pathinfo['extension'];
		// 2013/08/345349534.jpg
		$return[4]=$this->str_replace_once($this->data_root,'',$file);
		// 2013/08/
		$return[5]=dirname($return[4]).'/';
		// E:/wwwroot2/cms/common/upload/
		$return[6]=$this->data_root;
		// common/upload/2013/08/345349534.jpg
		$return[7]=$this->str_replace_once($this->web_root,'',$file);
		// common/upload/2013/08/
		$return[8]=dirname($return[7]).'/';
		// E:/wwwroot2/cms/
		$return[9]=$this->web_root;
		// common/upload/
		$return[10]=preg_replace('/'.preg_quote($return[5],'/').'$/i','',$return[8],1);
		// http://www.cms.com/common/upload/2013/08/345349534.jpg
		$return[11]=$this->http_domain.$return[7];
		// /common/upload/2013/08/345349534.jpg
		$return[12]='/'.$return[7];
		//  E:/wwwroot2/cms/common/upload/2013/08/345349534.jpg
		$return[13]=$this->file;
		
		$this->r=$return;
		return $return;
	}
	//http://www.php100.com/html/php/hanshu/2013/0905/4683.html
	private function str_replace_once($needle,$replace,$haystack) {
		$pos=strpos($haystack,$needle);
		if ($pos===false) return $haystack;
		return substr_replace($haystack,$replace,$pos,strlen($needle));
	}
	//
	public function rename_file($prefix='thumb_',$suffix=''){
		if($this->r[3]){
			$new=$this->r[0].$prefix.$this->r[2].$suffix.'.'.$this->r[3];
		}else{
			$new=$this->r[0].$prefix.$this->r[2].$suffix;
		}
		return $new;
	}
	
//
}
echo '<pre>';
$file='E:/wwwroot2/cms/common/upload/2013/08/345349534.jpg';
$path_ana=new path_ana();
$r=$path_ana->init($file);
print_r($r);

$file=$path_ana->rename_file();
$r=$path_ana->init($file);
print_r($r);